package rladidxo.basic;

public class J12_AccessModifier {
	
	//멤버 변수
	String defaulName;
	private String privatename;
	protected String protectedname;
	public String publicname;
	
	//메서드
	String defaultHello(){return "hello";}
	private String privateHello(){return "hello";}
	protected String protectedHello(){return "hello";}
	public String publicHello(){return "hello";}
	
	
	public static void main(String[] args) {
	//접근 지정자: access modifier
	//객체지향 3가지 특성 중 캡슐화와 관련
	//default, private, protected, public
	
	//default로 선언된 클래스에 대한 객체 선언
	//같은 패키지내에 J12_AccessModifier과
	//J12_DefaultClassdl 이 존재하므로 접근 가능
	J12_DefaultClass defaultClass = new J12_DefaultClass();
	defaultClass.name = "자바";
	defaultClass.sayHello();
	//private로 선언된 멤버변수/메소드 접근(중요!!)
	//private로 선언된 멤버변수와 메소드는 멤버 변수와 메소드를 선언한 클래스 내에서만 접근가능하고 외부 클래스에서는 접근불가
	J12_PrivateAccessor privateAccessor
		= new J12_PrivateAccessor();
	/*privateAccessor.name = "자바";
	privateAccessor.sayHello();*/

	//protected로 선언된 멤버변수/메서드 접근 (중요!!)
	J12_ProtectedAccessor protectedAccessor = new J12_ProtectedAccessor();
	protectedAccessor.name = "자바";
	protectedAccessor.sayHello();
	//public로 선언된 멤버변수/메서드 접근
	J12_PublicAccessor publicAccessor = new J12_PublicAccessor();
	publicAccessor.name = "자바";
	publicAccessor.sayHello();
	
	
}//main
}//class

//접근 지정자가 default로 선언된 클래스

class J12_DefaultClass{
	//접근 지정자가 default로 선언된 멤버변수
	String name;
	//접근 지정자가 default로 선언된 메소드
	String sayHello(){return "hello!!";}
}

class J12_PrivateAccessor{
	//접근 지정자가 private로 선언된 멤버 변수
	private String name;
	//접근 지정자가 private로 선언된 메소드
	private String sayHello(){return "hellow!!";}
}
class J12_ProtectedAccessor{
	//접근 지정자가 protected로 선언된 멤버 변수
	protected String name;
	//접근 지정자가 protected로 선언된 메소드
	protected String sayHello(){return "hellow!!";}
}
class J12_PublicAccessor{
	//접근 지정자가 protected로 선언된 멤버 변수
	public String name;
	//접근 지정자가 protected로 선언된 메소드
	public String sayHello(){return "hellow!!";}
}